﻿using Ah.Testudin.Engine.Actors;

using Microsoft.Xna.Framework;

namespace Ah.Testudin.Engine.Graphics.Scenes
{
    public interface ISceneNode
    {
        #region Properties

        ISceneNode ParentNode { get; set; }

        SceneNodeProperties Properties { get; }

        #endregion

        #region Methods

        void Update(
            GameTime gameTime,
            Scene scene);

        void PreRender(Scene scene);

        void Render(Scene scene);

        void RenderChildren(Scene scene);

        void PostRender(Scene scene);

        bool IsVisible(Scene scene);

        void AddChildNode(ISceneNode sceneNode);

        void RemoveChildNode(ISceneNode sceneNode);

        #endregion
    }
}
